package interfaceusuario;

import gui.SingletonSalvarEstadoDasVariaveis;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import propertieslinguagem.SingletonSetaLinguagemEArmazenaResourceBundle;

//tela chamada em seguida a TelaInsiraCaminhoDoProjeto caso o usuario queira testar um projeto OO
public class TelaQuerManterEstadoDasVariaveis implements ActionListener
{
	private JFrame janelaQuerManterEstadoDasVariaveis;
	private JCheckBox checkboxQuerSalvarEstadosDasVariaveisOuNao;
	private JButton oQueEhSalvarEstadosDasVariaveis;
	private JButton botaoContinuar;
	private JButton botaoVoltar;
	
	private String nomeSuiteProjeto;
	private String diretorioDoProjeto;
	
	public TelaQuerManterEstadoDasVariaveis(JFrame janelaPrincipalTestable, String nomeSuiteProjeto, String diretorioDoProjeto)
	{
		this.janelaQuerManterEstadoDasVariaveis = janelaPrincipalTestable;
		this.nomeSuiteProjeto = nomeSuiteProjeto;
		this.diretorioDoProjeto = diretorioDoProjeto;
				
	}
	
	public void desenharTelaQuerManterEstadoDasVariaveis()
	{
		SingletonSetaLinguagemEArmazenaResourceBundle conheceLinguagemDoSistema = 
				SingletonSetaLinguagemEArmazenaResourceBundle.getInstance();
		
		CriaPainelDeFundoComBackground criadorPainelPadrao = CriaPainelDeFundoComBackground.getInstance();
		JPanel painelDeFundoTelaQuerManterEstadoDasVariaveis = criadorPainelPadrao.criarPainelDeFundoPadraoDoSistema();
		GridBagLayout layoutPainel = new GridBagLayout();
		painelDeFundoTelaQuerManterEstadoDasVariaveis.setLayout(layoutPainel);
		GridBagConstraints g = new GridBagConstraints();
		
		g.gridx = 0;
		g.gridy = 0;
		String textoLabelQuerManterEstadoVariaveis = conheceLinguagemDoSistema.getString("manterEstadoVariaveisTelaQuerManterEstadoDasVariaveis");
		JLabel labelManterEstadoVariaveis = CriadorTextLabel.criarTextLabel(textoLabelQuerManterEstadoVariaveis, 40, Color.WHITE);
		painelDeFundoTelaQuerManterEstadoDasVariaveis.add(labelManterEstadoVariaveis, g);
		
		g.gridy = 1;
		g.gridx = 0;
		g.insets = new Insets(50, 0, 0, 0);
		
		String tituloCheckbox = conheceLinguagemDoSistema.getString("checkboxQuerSalvarEstadosDasVariaveisOuNaoTelaInsiraCaminhoDoProjeto");
		this.checkboxQuerSalvarEstadosDasVariaveisOuNao = new JCheckBox(tituloCheckbox);
		this.checkboxQuerSalvarEstadosDasVariaveisOuNao.setBackground(new Color(60, 106, 44));
		this.checkboxQuerSalvarEstadosDasVariaveisOuNao.setForeground(Color.WHITE);
		painelDeFundoTelaQuerManterEstadoDasVariaveis.add(checkboxQuerSalvarEstadosDasVariaveisOuNao, g);
		
		this.checkboxQuerSalvarEstadosDasVariaveisOuNao.setSelected(false);
		
		
		
		g.gridy = 2;
		
		String tituloBotaoOQueEh = conheceLinguagemDoSistema.getString("oQueEhSalvarEstadosDasVariaveisTelaInsiraCaminhoDoProjeto");
		
		this.oQueEhSalvarEstadosDasVariaveis = new JButton(tituloBotaoOQueEh);
		this.oQueEhSalvarEstadosDasVariaveis.addActionListener(this);
		painelDeFundoTelaQuerManterEstadoDasVariaveis.add(oQueEhSalvarEstadosDasVariaveis, g);
		
		g.gridy = 3;
		String tituloBotaoContinuar = conheceLinguagemDoSistema.getString("botaoContinuarTelaInsiraCaminhoDoProjeto");
		this.botaoContinuar = new JButton(tituloBotaoContinuar + " >>");
		this.botaoContinuar.addActionListener(this);
		painelDeFundoTelaQuerManterEstadoDasVariaveis.add(botaoContinuar, g);
		
		g.gridy = 4;
		g.anchor = g.EAST;
		String tituloBotaoVoltar = conheceLinguagemDoSistema.getString("botaoVoltarTelaInsiraCaminhoDoProjeto");
		
		this.botaoVoltar = new JButton("<< " + tituloBotaoVoltar);
		this.botaoVoltar.addActionListener(this);
		painelDeFundoTelaQuerManterEstadoDasVariaveis.add(botaoVoltar, g);
		
		janelaQuerManterEstadoDasVariaveis.add(painelDeFundoTelaQuerManterEstadoDasVariaveis);
		
		
		janelaQuerManterEstadoDasVariaveis.getContentPane().add(painelDeFundoTelaQuerManterEstadoDasVariaveis);
		
		
		janelaQuerManterEstadoDasVariaveis.getContentPane().revalidate();
		janelaQuerManterEstadoDasVariaveis.getContentPane().setVisible(true);
		janelaQuerManterEstadoDasVariaveis.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) 
	{
		Object fonteDoEvento = arg0.getSource();
		if(fonteDoEvento == this.oQueEhSalvarEstadosDasVariaveis)
		{
			Cursor cursorCarregando = new Cursor(Cursor.WAIT_CURSOR);
			this.janelaQuerManterEstadoDasVariaveis.setCursor(cursorCarregando);
			TelaEnsinaAoUsuarioSobreManterEstadoDasVariaveis telaEnsina =
								new TelaEnsinaAoUsuarioSobreManterEstadoDasVariaveis();
			Cursor cursorNormal = new Cursor(Cursor.DEFAULT_CURSOR);
			this.janelaQuerManterEstadoDasVariaveis.setCursor(cursorNormal);
			
		}
		else if(fonteDoEvento == this.botaoContinuar)
		{
			mudarSingletonSalvarEstadoDasVariaveis();
			janelaQuerManterEstadoDasVariaveis.getContentPane().setVisible(false);
			janelaQuerManterEstadoDasVariaveis.getContentPane().removeAll();
			janelaQuerManterEstadoDasVariaveis.getContentPane().invalidate();
			TelaCriacaoDaSuiteDeTestes telaCriarSuiteDeTestes = new TelaCriacaoDaSuiteDeTestes(this.nomeSuiteProjeto, this.diretorioDoProjeto);
		}
		else if(fonteDoEvento == this.botaoVoltar) 
		{
			janelaQuerManterEstadoDasVariaveis.getContentPane().setVisible(false);
			janelaQuerManterEstadoDasVariaveis.getContentPane().removeAll();
			janelaQuerManterEstadoDasVariaveis.getContentPane().invalidate();
			TelaInsiraCaminhoDoProjeto telaINsiraCaminhoProjeto = new TelaInsiraCaminhoDoProjeto(janelaQuerManterEstadoDasVariaveis);
			telaINsiraCaminhoProjeto.desenharTelaInsiraCaminhoDoProjeto();
		}
		
	}
	
	/*devemos verificar se o usuario quis ou nao salvar os estados das variaveis e salvar
	 * essa informacao para depois(para o executardecasosdeteste)*/
	public void mudarSingletonSalvarEstadoDasVariaveis()
	{
		SingletonSalvarEstadoDasVariaveis conheceSeDeveOuNaoSalvarEstados = 
											SingletonSalvarEstadoDasVariaveis.getInstance();
		boolean devemosSalvarEstadoDasVariaveis = true;
		
		devemosSalvarEstadoDasVariaveis = this.checkboxQuerSalvarEstadosDasVariaveisOuNao.isSelected();
		
		
		conheceSeDeveOuNaoSalvarEstados.setSalvarEstadoDasVariaveis(devemosSalvarEstadoDasVariaveis);
		System.out.println("----------------->devemos salvar o estado das variaveis?" + devemosSalvarEstadoDasVariaveis);
	}

}
